package org.web.webdisplay.sdk.dto.query;

import java.util.*;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
import org.web.base.domain.*;

//import jakarta.validation.constraints.Max;
//import jakarta.validation.constraints.NotNull;

@Setter
@Getter
public class QueryAccountInfoRequest extends ExtendQueryBase {
    /**
     * 圈定 'specifiedAttributeSet' 返回属性信息范围，指定的属性信息与列定义名称保持一致。
     */
    private static final Set<String> COLUMN_SET = new HashSet<>(Arrays.asList("account_info_id", "group_info_id", "user_name", "mail", "account_num", "description", "create_time", "update_time", "is_delete"));

    /**
     * 圈定 'specifiedAttributeSet' 返回属性信息范围，指定的属性信息与列定义名称保持一致。
     */
    private static final Set<String> SORT_COLUMN_SET = new HashSet<>(Arrays.asList("account_info_id", "group_info_id", "user_name", "mail", "account_num", "description", "create_time", "update_time", "is_delete"));

    @Override
    public Set<String> getColumnsSet() {
        return COLUMN_SET;
    }

    @Override
    public Set<String> getSortColumnsSet() {
        return SORT_COLUMN_SET;
    }

    /**
     * 根据 'accountInfoId' 精确查询.
     */
    private Integer accountInfoId;

    /**
     * 根据 'accountInfoIdSet' 范围查询.
     */
    private Set<Integer> accountInfoIdSet;

    /**
     * 根据 'groupInfoId' 精确查询.
     */
    private Integer groupInfoId;

    /**
     * 根据 'groupInfoIdSet' 范围查询.
     */
    private Set<Integer> groupInfoIdSet;

    /**
     * 根据 'fuzzyUserName' 模糊查询.
     */
    private String fuzzyUserName;

    /**
     * 根据 'fuzzyMail' 模糊查询.
     */
    private String fuzzyMail;

    /**
     * 根据 'mailSet' 范围查询.
     */
    private Set<String> mailSet;

    /**
     * 根据 'accountNum' 精确查询.
     */
    private Integer accountNum;

    /**
     * 根据 'fuzzyAccountNum' 模糊查询.
     */
    private Integer fuzzyAccountNum;

    /**
     * 根据 'fuzzyDescription' 模糊查询.
     */
    private String fuzzyDescription;

    /**
     * 设置大于 'createTime' 查询.
     */
    private Date moreThanCreateTime;

    /**
     * 设置小于 'createTime' 查询.
     */
    private Date lessThanCreateTime;

    /**
     * 设置大于等于 'createTime' 查询.
     */
    private Date equalAndMoreThanCreateTime;

    /**
     * 设置小于等于 'createTime' 查询.
     */
    private Date equalAndLessThanCreateTime;

    /**
     * 设置大于 'updateTime' 查询.
     */
    private Date moreThanUpdateTime;

    /**
     * 设置小于 'updateTime' 查询.
     */
    private Date lessThanUpdateTime;

    /**
     * 设置大于等于 'updateTime' 查询.
     */
    private Date equalAndMoreThanUpdateTime;

    /**
     * 设置小于等于 'updateTime' 查询.
     */
    private Date equalAndLessThanUpdateTime;

    /**
     * 根据 'isDelete' 精确查询.
     */
    private String isDelete;


    @NotNull(message = "pageSize 不能为空")
    @Max(value = 200, message = "pageSize 不能大于200")
    public Integer getPageSize() {
        return super.getPageSize();
    }
}